const fnReturn = () => [1, 2, 3, 'sad', false]
// 这个工具主要适用于函数，能够提取函数所返回的类型。
type num = ReturnType<typeof fnReturn>

// 原理 infer就是推导泛型参数
//  这是一个条件类型。它检查 F 是否是一个函数类型，并尝试推断其返回类型。
// ...args: any[]: 这部分表示函数可以接受任意数量和类型的参数。
// => infer Res: 这部分尝试推断函数的返回类型，并将其命名为 Res。
type CustomFn<F extends Function> = F extends (...args: any[]) => infer Res ? Res : never
